﻿goog.provide('imc.ui.CatProveedor');

imc.ui.CatProveedor = function (opt) { //Constructor
    //attributes privados
    var dataGrid;

    /*\\Behavior : --------------------------------- */
    //Todos los ids van con #
    this.opt = {
        idDivContent: "#der"
        , idDivNav: "#izq"
        , idTableDataTable: "#tblCat"
    };

    $().extend(this.opt, opt);
    //alert(this.opt.test);
    this.draw();
    /*//Behavior : --------------------------------- */
} //Fin constructor

//Atributos Público************************************************
imc.ui.CatProveedor.prototype.oTable = null;
imc.ui.CatProveedor.prototype.opt = null;

//Metodos Públicos*************************************************
imc.ui.CatProveedor.prototype.draw = function () {
    $(this.opt.idDivNav).load('catalogos.html #navigationPanelCat', function () { });
    this.loadContent();
};

imc.ui.CatProveedor.prototype.loadContent = function () {
    var that = this;
    $(this.opt.idDivContent).load('catalogos.html #catContent', function () {
        that.catProveedorDataTable();
    });
};

imc.ui.CatProveedor.prototype.catProveedorDataTable = function () {
    var that = this;
    $.ajax({
        url: "Services/CAT.svc/GetDataProveedor"
        ,type: "POST"
        ,dataType: "json"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,success: function (data) {
            oTable = $('#tblCat').dataTable({
                'bInfo': false
                ,'bPaginate': false
                ,'bLengthChange': false
                ,'bRetrieve': true, 'sDom': ''
                ,'sInfoEmpty': ''
                ,'bAutoWidth': false
                ,aaData: data.GetDataProveedorResult
                ,aoColumns: [
                    {
                        "aTargets": [0]
                        ,"fnRender": function (oObj) {
                            return '<input type="checkbox" id="readonly" imc-data="' + oObj.aData["ID_PROVEEDOR"] + '" value="' + oObj.aData[0] + '" name="check" />';
                        }
                        ,"sClass": "checkboxId"
                        ,"bSearchable": false
                        ,"bSortable": false
                        ,"mDataProp": "check"
                        ,"sWidth": "4%"
                    }
                    ,{ "sTitle": "Proveedor", "mDataProp": "PROVEEDOR", "sClass": "editarCat" }
                    ,{ "sTitle": "Contacto", "mDataProp": "CONTACTO", "sClass": "editarCat" }
                    ,{ "sTitle": "Teléfono 1", "mDataProp": "TEL1", "sClass": "editarCat" }
                    ,{ "sTitle": "Teléfono 2", "mDataProp": "TEL2", "sClass": "editarCat" }
                    ,{ "sTitle": "Mail", "mDataProp": "MAIL", "sClass": "editarCat" }
                    ,{ "sTitle": "Calle", "mDataProp": "CALLE", "sClass": "editarCat" }
                    ,{ "sTitle": "País", "mDataProp": "ID_PAIS", "sClass": "editarCat" }
                    ,{ "sTitle": "Ciudad", "mDataProp": "ID_CIUDAD", "sClass": "editarCat" }
                    ,{ "sTitle": "Código Postal", "mDataProp": "CODIGO_POSTAL", "sClass": "editarCat" }
                    ,{ "sTitle": "RFC", "mDataProp": "RFC", "sClass": "editarCat" }
                ]
            });
            $('#tblCat tbody .editarCat').die('click');
            $('#tblCat tbody .editarCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var sDataCat = oTable.fnGetData($(this).parent().get(0));
                for (var i in sDataCat) {
                    if (i = 'ID_PROVEEDOR') {
                        idCat = sDataCat[i];
                    }
                }
                var dlg = that.dlgUpdateProveedor(idCat);
                dlg.setVisible(true);
                /*\\TabPane Proveedor : -----------------------------*/
                var tabPanePC = new goog.ui.TabPane(document.getElementById('tabPaneProveedor'));
                tabPanePC.addPage(new goog.ui.TabPane.TabPage(document.getElementById('tabInfoProveedor'), 'Información'));
                tabPanePC.addPage(new goog.ui.TabPane.TabPage(document.getElementById('tabCategoriasProveedor'), 'Categorías'));
                /*//TabPane Proveedor : -----------------------------*/
                /*\\Recuperar campos para modificar : -------------- */
                $.ajax({
                    type: "POST"
                    ,url: "Services/Cat.svc/GetOneProveedor"
                    ,data: '{"ID_PROVEEDOR":' + idCat + '}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        /*\\Object CharCounter : ------------------------*/
                        var userCharCounter = new imc.CharCounter({columnName:"PROVEEDOR"});
                        /*//Object CharCounter : ------------------------*/
                        if (data.GetOneProveedorResult != null) {
                            document.getElementById('PROVEEDOR').value = data.GetOneProveedorResult["PROVEEDOR"];
                            document.getElementById('CONTACTO').value = data.GetOneProveedorResult["CONTACTO"];
                            document.getElementById('TEL1').value = data.GetOneProveedorResult["TEL1"];
                            document.getElementById('TEL2').value = data.GetOneProveedorResult["TEL2"];
                            document.getElementById('MAIL').value = data.GetOneProveedorResult["MAIL"];
                            document.getElementById('CALLE').value = data.GetOneProveedorResult["CALLE"];
                            document.getElementById('ID_PAIS').value = data.GetOneProveedorResult["ID_PAIS"];
                            document.getElementById('ID_CIUDAD').value = data.GetOneProveedorResult["ID_CIUDAD"];
                            document.getElementById('CODIGO_POSTAL').value = data.GetOneProveedorResult["CODIGO_POSTAL"];
                            document.getElementById('RFC').value = data.GetOneProveedorResult["RFC"];
                        } else {
                            alert('Los datos vienen vacios ({"GetOneProveedorResult":null})');
                        }
                    }
                    ,error: function (result) {
                        alert('Error al recuperar Proveedor ' + result.status + ' ' + result.statusText);
                    }
                });
                /*//Recuperar campos para modificar--------------*/
                /*\\DataTable Categoría : ---------------------------*/
                $.ajax({
                    url: "Services/Cat.svc/GetListProveedorCategoria"
                    ,type: "POST"
                    ,dataType: "json"
                    ,data: '{"ID_PROVEEDOR":"' + idCat + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,success: function (data) {
                        console.log(data.GetListProveedorCategoriaResult);
                        oTableTblRoles = $('#dataTableProveedorCategoria').dataTable({
                            'bInfo': false,
                            'bPaginate': false,
                            'bLengthChange': false,
                            'bRetrieve': true, 'sDom': '',
                            'sInfoEmpty': '',
                            aaData: data.GetListProveedorCategoriaResult,
                            aoColumns: [
                                { "mDataProp": "CATEGORIA"},
                                {
                                    "aTargets": [0],
                                    "fnRender": function (oObj) {
                                        return '<input type="checkbox"' + ((oObj.aData["CHECKED"] == '1') ? 'checked="true"' : '') +'id="readonly" imc-data="' + oObj.aData["ID_CATEGORIA"] + '" value="' + oObj.aData[0] + '" name="check"/>';
                                    },
                                    "sClass": "checkboxId",
                                    "bSearchable": false,
                                    "bSortable": false,
                                    "mDataProp": "CHECKED",
                                    "sWidth": "4%"
                                }
                            ]
                        });
                    },
                    error: function (result) {
                        alert('Error al mostrar el grid Categoría ' + result.status + ' ' + result.statusText);
                    }
                });
                /*//DataTable Categoría : --------------------------*/
            });
            $('.newCat').die('click');
            $('.newCat').live('click', function () {
                var dlg = that.dlgNewCatProveedor(
                    {test: function(check){
                        $.ajax({
                            type: "POST"
                            ,url: "Services/CAT.svc/GetDataProveedor"
                            ,data: '{}'
                            ,contentType: "application/json; charset=utf-8"
                            ,dataType: "json"
                            ,success: function (data) {
                                var idNewProveedor;
                                var ot = $("#tblCat").dataTable();
                                ot.fnClearTable();
                                ot.fnAddData(data.GetDataProveedorResult);
                                for (var i = 0; i < data.GetDataProveedorResult.length; i++) {
                                    idNewProveedor = data.GetDataProveedorResult[i].ID_PROVEEDOR;
                                }
                                $.ajax({
                                    url: "Services/CAT.svc/insertRelProveedorCategoria"
                                    , type: "POST"
                                    , dataType: "json"
                                    , data: '{"ID_PROVEEDOR":' + idNewProveedor + ',"CATEGORIAS":"' + that.opt.check + '"}'
                                    , contentType: "application/json; charset=utf-8"
                                    , success: function (data){
                                        console.log('Relación Proveedor Categoría creada');
                                    }
                                    , error: function (result) {
                                        console.log('Error al crear la relación Proveedor Categoría ' + result.status + ' ' + result.statusText);
                                    }
                                });
                            }
                            ,error: function (result) {
                                alert('Error al recargar la tabla de Proveedores' + result.status + ' ' + result.statusText);
                            }
                        });}
                    }
                );
                dlg.setVisible(true);
                /*\\TabPane Proveedor : -----------------------------*/
                var tabPanePC = new goog.ui.TabPane(document.getElementById('tabPaneProveedor'));
                tabPanePC.addPage(new goog.ui.TabPane.TabPage(document.getElementById('tabInfoProveedor'), 'Información'));
                tabPanePC.addPage(new goog.ui.TabPane.TabPage(document.getElementById('tabCategoriasProveedor'), 'Categorías'));
                /*//TabPane Proveedor : -----------------------------*/
                /*\\Object CharCounter : ------------------------*/
                var userCharCounter = new imc.CharCounter({columnName:"PROVEEDOR"});
                /*//Object CharCounter : ------------------------*/
            });
            $('.deleteCat').die('click');
            $('.deleteCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var stringDeleteCat = "";
                $('input[type="checkbox"]:checked', oTable.fnGetNodes()).each(function (i) {
                    stringDeleteCat += $(this).attr("imc-data") + ",";
                });
                if (stringDeleteCat != "") {
                    stringDeleteCat = stringDeleteCat.substring(0, stringDeleteCat.length - 1);
                }
                if (stringDeleteCat != "") {
                    var dlg = that.dlgDeleteCatProveedor(stringDeleteCat);
                    dlg.setVisible(true);
                } else {
                    alert('No hay ningún Proveedor seleccionado');
                    return true;
                }
            });
        }
        ,error: function (result) {
            alert('Error al obtener Proveedores ' + result.status + ' ' + result.statusText);
        }
    });
}

imc.ui.CatProveedor.prototype.reloadCatProveedorDataTable = function () { //Recargar tabla al agregar, modificar o eliminar Proveedor
    var that = this;
    $.ajax({
        type: "POST"
        ,url: "Services/Cat.svc/GetDataProveedor"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,dataType: "json"
        ,success: function (data) {
            if (data.GetDataProveedorResult != null) {
                var ot = $("#tblCat").dataTable();
                ot.fnClearTable();
                ot.fnAddData(data.GetDataProveedorResult);
            } else {
                that.loadContent();
            }
        }
        ,error: function (result) {
            alert('Error al recargar la tabla de Proveedor ' + result.status + ' ' + result.statusText);
        }
    });
}; //Fin recargar tabla al agregar, modificar o eliminar Proveedor

imc.ui.CatProveedor.prototype.dlgNewCatProveedor = function (opt) { //Dialog agregar Proveedor
    var that = this;
    $().extend(this.opt, opt);
    this.dialogAgregarCat = new goog.ui.Dialog();
    this.dialogAgregarCat.setContent(
        /*\\TabPane dlg newProveedor : -----------------------------------*/
        '<div id="tabPaneProveedor"></div><br/>'
        /*//TabPane dlg newProveedor : -----------------------------------*/
        /*\\Información de nuevo Proveedor : --------------------------*/
        +'<div id="tabInfoProveedor" style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Nombre: </label></div><div style="width:450px; float:left;"><input type="text" id="PROVEEDOR" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Contacto: </label></div><div style="width:450px; float:left;"><input type="text" id="CONTACTO" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Teléfono 1: </label></div><div style="width:450px; float:left;"><input type="text" id="TEL1" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Teléfono 2: </label></div><div style="width:450px; float:left;"><input type="text" id="TEL2" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Mail: </label></div><div style="width:450px; float:left;"><input type="text" id="MAIL" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Calle: </label></div><div style="width:450px; float:left;"><input type="text" id="CALLE" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">ID País: </label></div><div style="width:450px; float:left;"><input type="text" id="ID_PAIS" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">ID Ciudad: </label></div><div style="width:450px; float:left;"><input type="text" id="ID_CIUDAD" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Código Postal: </label></div><div style="width:450px; float:left;"><input type="text" id="CODIGO_POSTAL" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">RFC: </label></div><div style="width:450px; float:left;"><input type="text" id="RFC" style="width: 250px;" /></div></div></div><br /><br />'
        /*\\Categorías de nuevo Proveedor : ---------------------------------*/
         +'<div style="font-size: 85%;" id="tabCategoriasProveedor">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
         +'<table cellpadding="0" cellspacing="0" border="0" class="display" id="dataTableProveedorCategoria" style="width:500px; margin-left: 50px;"></table>'
         +'</div>'
         /*//Categotías de nuevo Proveedor : ---------------------------------*/
    );
    var titleNewCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Agregar Proveedor');
    this.dialogAgregarCat.setTitle(titleNewCat);
    var btnNewCat = new goog.ui.Dialog.ButtonSet();
    btnNewCat.addButton({ caption: "Agregar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogAgregarCat.setButtonSet(btnNewCat);
    this.dialogAgregarCat.setDisposeOnHide(true);
    /*\\DataTable Categorías : -----------------------------*/
    $.ajax({
        url: "Services/CAT.svc/GetDataCategoria"
        ,type: "POST"
        ,dataType: "json"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,success: function (data) {
            console.log(data.GetDataCategoriaResult);
            oTable = $('#dataTableProveedorCategoria').dataTable({
                'bInfo': false,
                'bPaginate': false,
                'bLengthChange': false,
                'bRetrieve': true, 'sDom': '',
                'sInfoEmpty': '',
                aaData: data.GetDataCategoriaResult,
                aoColumns: [
                    { "mDataProp": "CATEGORIA" },
                    {
                        "aTargets": [0],
                        "fnRender": function (oObj) {
                            return '<input type="checkbox" id="readonly" imc-data="' + oObj.aData["ID_CATEGORIA"] + '" value="' + oObj.aData[0] + '" name="check" />';
                        },
                        "sClass": "checkboxId",
                        "bSearchable": false,
                        "bSortable": false,
                        "mDataProp": "check",
                        "sWidth": "4%"
                    }
                ]
            });
        }
        ,error: function (result) {
            alert('Error al obtener Categorías ' + result.status + ' ' + result.statusText);
        }
    });
    /*//DataTable Categorías : -----------------------------*/
    goog.events.listen(this.dialogAgregarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            var val1 = $("#PROVEEDOR").val();
            var val2 = $("#CONTACTO").val();
            var val3 = $("#TEL1").val();
            var val4 = $("#TEL2").val();
            var val5 = $("#MAIL").val();
            var val6 = $("#CALLE").val();
            var val7 = $("#ID_PAIS").val();
            var val8 = $("#ID_CIUDAD").val();
            var val9 = $("#CODIGO_POSTAL").val();
            var val10 = $("#RFC").val();
            var check = "";
            var uncheck = "";
            var oTable = $('#dataTableProveedorCategoria').dataTable();
            $('input', oTable.fnGetNodes()).each(function (i) {
                if ($(this).is(':checked')) {
                    check += "{ID_CATEGORIA:"  + "'" + $(this).attr("imc-data") + "'" + ",CHECKED:'1'},";
                    uncheck += 1;
                }
                else {
                    uncheck += 0;
                }
            });
            if (check != "") {
                check = check.substring(0, check.length - 1);
            }
            that.opt.check = '[' + check + ']';
            if (val1 == "" || val2 == "" || val3 == "" || val4 == "" || val5 == "" ||
                val6 == "" || val7 == "" || val8 == "" || val9 == "" || val10 == "") {
                $('.validarCat').html('Todos  los campos son requeridos');
                return false;
            }
            else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(val5)) {
                $("#MAIL").removeClass('campoSinError').addClass('campoConError');
                $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                $("#RFC").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('Ingrese un correo valido');
                return false;
            }
            else if(!/^([0-9])*$/.test(val7)){
                $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                $("#ID_PAIS").removeClass('campoSinError').addClass('campoConError');
                $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                $("#RFC").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('ID País debe ser numérico ');
                return false;
            }
            else if(!/^([0-9])*$/.test(val8)){
                $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                $("#ID_CIUDAD").removeClass('campoSinError').addClass('campoConError');
                $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                $("#RFC").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('ID Ciudad debe ser numérico');
                return false;
            }
            else if(!/^([0-9])*$/.test(val9)){
                $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                $("#CODIGO_POSTAL").removeClass('campoSinError').addClass('campoConError');
                $("#RFC").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('El Código Postal debe ser numérico');
                return false;
            }
            else if (val10.length<13)
            {
                $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                $("#RFC").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('El RFC debe contener 13 caracteres')

                if (!/^([A-Z\s]{4})\d{6}([A-Z\w]{3})*$/.test(val10))
                {
                    $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                    $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                    $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                    $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                    $("#RFC").removeClass('campoSinError').addClass('campoConError');
                    $('.validarCat').html('Ingrese un rfc valido')
                    return false;
                }
            }
            else if(uncheck == 0){
                $('.validarCat').html('Seleccione al menos una Categoría');
                return false;
            } else {
                $.ajax({
                    url: "Services/CAT.svc/InsertProveedor"
                    ,type: "POST"
                    ,data:
                        '{"PROVEEDOR":"' + val1
                        + '","CONTACTO":"' + val2
                        + '","TEL1":"' + val3
                        + '","TEL2":"' + val4
                        + '","MAIL":"' + val5
                        + '","CALLE":"' + val6
                        + '","ID_PAIS":"' + val7
                        + '","ID_CIUDAD":"' + val8
                        + '","CODIGO_POSTAL":"' + val9
                        + '","RFC":"' + val10 + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        var test = "";
                        test = data.InsertProveedorResult.state;
                        if(!test){
                            $('.validarCat').html('Ya existe un Proveedor con este nombre');
                            return null;
                        } else {
                            that.opt.test(check);
                            that.dialogAgregarCat.setVisible(false);
                        }
                    }
                    ,error: function (result) {
                        alert('Error al agregar Proveedor ' + result.status + ' ' + result.statusText);
                    }
                });
                return false;
            }
        }
    });
    return this.dialogAgregarCat;
};  //Fin dialog agregar Proveedor

imc.ui.CatProveedor.prototype.dlgDeleteCatProveedor = function (stringDeleteCat) { //Dialog borrar Proveedor
    var that = this;
    this.dialogBorrarCat = new goog.ui.Dialog();
    this.dialogBorrarCat.setContent(
    '<div style="font-size: 85%;">'
        +'<label>¿Está seguro que desea eliminar los Proveedores seleccionados?</label><br />'
        +'<label>Si elimina un Proveedor se eliminara también todas las referencias que tenga con otros catálogos.</label><br />'
    +'</div>'
    );
    this.dialogBorrarCat.setTitle('Borrar Proveedor');
    var btnBorrarCat = new goog.ui.Dialog.ButtonSet();
    btnBorrarCat.addButton({ caption: "Borrar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogBorrarCat.setButtonSet(btnBorrarCat);
    this.dialogBorrarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogBorrarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            $.ajax({
                url: "Services/CAT.svc/DeleteProveedor",
                type: "POST",
                dataType: "json",
                data: '{"ID_PROVEEDOR": "' + stringDeleteCat + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data) {
                        that.reloadCatProveedorDataTable();
                        return true;
                    }
                },
                error: function (result) {
                    alert('Error al borrar Proveedor ' + result.status + ' ' + result.statusText);
                }
            });
        }
    });
    return this.dialogBorrarCat;
}   //Fin dialog borrar Proveedor

 imc.ui.CatProveedor.prototype.dlgUpdateProveedor = function (idCat) { //Dialog modificar Proveedor
     var that = this;
     this.dialogModificarCat = new goog.ui.Dialog();
     this.dialogModificarCat.setContent(
         /*\\TabPane dlg newProveedor : -----------------------------------*/
         '<div id="tabPaneProveedor"></div><br/>'
             /*//TabPane dlg newProveedor : -----------------------------------*/
             /*\\Información de nuevo Proveedor : --------------------------*/
             +'<div id="tabInfoProveedor" style="font-size: 85%;">'
             +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Nombre: </label></div><div style="width:450px; float:left;"><input type="text" id="PROVEEDOR" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Contacto: </label></div><div style="width:450px; float:left;"><input type="text" id="CONTACTO" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Teléfono 1: </label></div><div style="width:450px; float:left;"><input type="text" id="TEL1" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Teléfono 2: </label></div><div style="width:450px; float:left;"><input type="text" id="TEL2" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Mail: </label></div><div style="width:450px; float:left;"><input type="text" id="MAIL" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Calle: </label></div><div style="width:450px; float:left;"><input type="text" id="CALLE" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">ID País: </label></div><div style="width:450px; float:left;"><input type="text" id="ID_PAIS" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">ID Ciudad: </label></div><div style="width:450px; float:left;"><input type="text" id="ID_CIUDAD" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">Código Postal: </label></div><div style="width:450px; float:left;"><input type="text" id="CODIGO_POSTAL" style="width: 250px;" /></div></div><br /><br />'
             +'<div><div style="width:150px; float:left;"><label style="float:right;">RFC: </label></div><div style="width:450px; float:left;"><input type="text" id="RFC" style="width: 250px;" /></div></div></div><br /><br />'
             /*\\Categorías de nuevo Proveedor : ---------------------------------*/
             +'<div style="font-size: 85%;" id="tabCategoriasProveedor">'
             +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
             +'<table cellpadding="0" cellspacing="0" border="0" class="display" id="dataTableProveedorCategoria" style="width:500px; margin-left: 50px;"></table>'
             +'</div>'
         /*//Categotías de nuevo Proveedor : ---------------------------------*/
     );
     var titleModificarCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Modificar Proveedor');
     this.dialogModificarCat.setTitle(titleModificarCat);
     var btnModificarCat = new goog.ui.Dialog.ButtonSet();
     btnModificarCat.addButton({ caption: "Guardar cambios", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
     this.dialogModificarCat.setButtonSet(btnModificarCat);
     this.dialogModificarCat.setDisposeOnHide(true);
     goog.events.listen(this.dialogModificarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
         if (e.key == "o") {
             return true;
         } else {
             var val1 = $("#PROVEEDOR").val();
             var val2 = $("#CONTACTO").val();
             var val3 = $("#TEL1").val();
             var val4 = $("#TEL2").val();
             var val5 = $("#MAIL").val();
             var val6 = $("#CALLE").val();
             var val7 = $("#ID_PAIS").val();
             var val8 = $("#ID_CIUDAD").val();
             var val9 = $("#CODIGO_POSTAL").val();
             var val10 = $("#RFC").val();
             var check = "";
             var uncheck = "";
             var oTable = $('#dataTableProveedorCategoria').dataTable();
             $('input', oTable.fnGetNodes()).each(function (i) {
                 if ($(this).is(':checked')) {
                     check += "{ID_CATEGORIA:" + "'" + $(this).attr("imc-data") + "'" + ",CHECKED:'1'},";
                     uncheck += 1;
                 }
                 else {
                     uncheck += 0;
                 }
             });
             if (check != "") {
                 check = check.substring(0, check.length - 1);
             }
             check = '[' + check + ']';
             if (val1 == "" || val2 == "" || val3 == "" || val4 == "" || val5 == "" ||
                 val6 == "" || val7 == "" || val8 == "" || val9 == "" || val10 == "") {
                 $('.validarCat').html('Todos  los campos son requeridos');
                 return false;
             }
             else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(val5)) {
                 $("#MAIL").removeClass('campoSinError').addClass('campoConError');
                 $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                 $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                 $("#RFC").removeClass('campoConError').addClass('campoSinError');
                 $('.validarCat').html('Ingrese un correo valido');
                 return false;
             }
             else if(!/^([0-9])*$/.test(val7)){
                 $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_PAIS").removeClass('campoSinError').addClass('campoConError');
                 $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                 $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                 $("#RFC").removeClass('campoConError').addClass('campoSinError');
                 $('.validarCat').html('ID País debe ser numérico ');
                 return false;
             }
             else if(!/^([0-9])*$/.test(val8)){
                 $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_CIUDAD").removeClass('campoSinError').addClass('campoConError');
                 $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                 $("#RFC").removeClass('campoConError').addClass('campoSinError');
                 $('.validarCat').html('ID Ciudad debe ser numérico');
                 return false;
             }
             else if(!/^([0-9])*$/.test(val9)){
                 $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                 $("#CODIGO_POSTAL").removeClass('campoSinError').addClass('campoConError');
                 $("#RFC").removeClass('campoConError').addClass('campoSinError');
                 $('.validarCat').html('El Código Postal debe ser numérico');
                 return false;
             }
             else if (val10.length<13)
             {
                 $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                 $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                 $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                 $("#RFC").removeClass('campoSinError').addClass('campoConError');
                 $('.validarCat').html('El RFC debe contener 13 caracteres')

                 if (!/^([A-Z\s]{4})\d{6}([A-Z\w]{3})*$/.test(val10))
                 {
                     $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                     $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                     $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                     $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                     $("#RFC").removeClass('campoSinError').addClass('campoConError');
                     $('.validarCat').html('Ingrese un rfc valido')
                     return false;
                 }
             }
             else if(uncheck == 0){
                 $('.validarCat').html('Seleccione al menos una Categoría');
                 return false;
             } else {
                 $.ajax({
                     url: "Services/Cat.svc/UpdateProveedor"
                     ,type: "POST"
                     ,data:
                         '{"ID_PROVEEDOR":' + idCat
                             + ',"PROVEEDOR":"' + val1
                             + '","CONTACTO":"' + val2
                             + '","TEL1":"' + val3
                             + '","TEL2":"' + val4
                             + '","MAIL":"' + val5
                             + '","CALLE":"' + val6
                             + '","ID_PAIS":"' + val7
                             + '","ID_CIUDAD":"' + val8
                             + '","CODIGO_POSTAL":"' + val9
                             + '","RFC":"' + val10 + '"}'
                     ,contentType: "application/json; charset=utf-8"
                     ,dataType: "json"
                     ,success: function (data) {
                         $.ajax({
                             url: "Services/CAT.svc/insertRelProveedorCategoria"
                             , type: "POST"
                             , dataType: "json"
                             , data: '{"ID_PROVEEDOR":' + idCat + ',"CATEGORIA":"' + check + '"}'
                             , contentType: "application/json; charset=utf-8"
                             , success: function (data){
                                 console.log('idCat: '+idCat);
                                 console.log('check: '+check);
                                 console.log('Relación Proveedor Categoría actualizada');
                             }
                             , error: function (result) {
                                 console.log('Error al crear la relación Proveedor Categoría ' + result.status + ' ' + result.statusText);
                             }
                         });
                         that.reloadCatProveedorDataTable();
                         return true;
                     }
                     ,error: function (result) {
                         alert('Error al modificar Proveedor ' + result.status + ' ' + result.statusText);
                     }
                 });
             }
         }
     });
     return this.dialogModificarCat;
 } //Fin dialog modificar Proveedor